package Management.c;

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;


public class StudentExcele
/*
public关键字声明主函数为public就是告诉其他的类可以访问这个函数
static关键字，告知编译器main方法是一个静态方法
也就是in方法中的代码是存储在静态存储区（方法区）的
即当定义了类以后这段代码就已经存在了
只要类被加载后，就可以使用该方法
不需要通过实例化来访问
可直接通过类名.main()直接访问。
void关键字表明main()的返回值是无类型
main是jvm识别的特殊方法名，是程序的入口方法
同一个.java文件可以有多个main方法
但只有与文件名相同的用public修饰的类中的main()方法才能作为整个程序的入口方法
 */
{


        public ArrayList<StudentPojo> readStudentInfo(File file)
        /*
        public ArrayList(int initialCapacity){}
给数组的长度初始化，
所以一般在知道数据长度的情况下最好赋固定的值
public ArrayList(){}
平时用的最多的，默认创建长度为10的数组
ArrayList里面有参数
ArrayList的几个参数
 private static final int DEFAULT_CAPACITY = 10;
这个是ArrayList初始化时如果没有为ArrayList长度赋值
长度为10的数组
private static final Object[] EMPTY_ELEMENTDATA = {};
private transient Object[] elementData;
这是一个缓存数组，ArrayList的长度就等于这个缓冲区数组的长度
一般实际存在数据的长度肯定小于这个缓冲区数组的长度
当第一个数据被添加进来的时候如果elementData==EMPTY_ELEMENTDATA
就为空时，elementData的长度被扩充成10
还没搞清楚transient的实际作用
        */
        {
            {
                // 开始excel操作
                ArrayList<StudentPojo> slist = new ArrayList<>();
                // 工作薄
                XSSFWorkbook wb = null;
                try {
                    wb = new XSSFWorkbook(file);
                    // 获取第一个sheet页
                    XSSFSheet sheet1 = wb.getSheetAt(0);

                    for (int i = 5; i <= sheet1.getLastRowNum(); i++) {
                        // 获取单元格
                        XSSFRow row = sheet1.getRow(i);
                        XSSFCell cell1 = row.getCell(0);
                        XSSFCell cell2 = row.getCell(1);
//                                                            System.out.println(cell1.getStringCellValue());
//                                                            System.out.println(cell2.getStringCellValue());
                        StudentPojo pojo = new StudentPojo();
                        pojo.setSno(cell1.getStringCellValue().toString());
                        pojo.setSname(cell2.getStringCellValue().toString());
                        slist.add(pojo);
                    }

                    wb.close();
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (InvalidFormatException e) {
                    e.printStackTrace();
                }

                return slist;
                //结束
            }
        }
    }

